perm filename DERIV.MCL[TIM,LSP]1 blob sn#617899 filedate 1981-10-12 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	(DEFUN DER1 (A) (LIST 'QUOTIENT (DERIV A) A))
C00004 ENDMK
CāŠ—;
(DEFUN DER1 (A) (LIST 'QUOTIENT (DERIV A) A))

 (DEFUN DERIV (A)
	(COND 
		((ATOM A)		(COND ((EQUAL A 'X) 1) (T 0)))
		((EQUAL (CAR A) 'PLUS)	(CONS 'PLUS (MAPCAR 'DERIV (CDR A))))
		((EQUAL (CAR A) 'DIFFERENCE) 
					(CONS 'DIFFERENCE (MAPCAR 'DERIV 
								  (CDR A))))
		((EQUAL (CAR A) 'TIMES)	(LIST 'TIMES 
					      A 
					      (CONS 'PLUS (MAPCAR 'DER1 A))))
		((EQUAL (CAR A) 'QUOTIENT)
					(LIST 'DIFFERENCE 
					      (LIST 'QUOTIENT 
						    (DERIV (CADR A)) 
						    (CADDR A))
				     	      (LIST 'QUOTIENT 
						    (CADR A) 
						    (LIST 'TIMES
							  (CADDR A)
							  (CADDR A)
							  (DERIV (CADDR A))))))
		(T 'ERROR)))

(DEFUN RUN ()
	(PROG (I FORMULA)
	      (SETQ I 0)
	      (SETQ FORMULA '(PLUS (TIMES 3 X X) (TIMES A X X) (TIMES B X) 5))
	Q     (DERIV '(PLUS (TIMES 3 X X) (TIMES A X X) (TIMES B X) 5))
	      (COND ((LESSP (SETQ I (ADD1 I)) 500.) (GO Q)))))

(defun timit ()
 ((lambda (t1 x gt)
	(run)
	  (setq t1 (- (runtime) t1))
	  (setq gt (- (status gctime) gt))
	  (print (list 'runtime
		       (QUOTIENT (FLOAT  (- t1 gt))
				 1000000.)))
	  (print (list 'gctime
		       (quotient (float gt) 1000000.))))
  (runtime) ()(status gctime)))